package com.thinkgem.javamg.modules.busi.crawler;

import com.thinkgem.javamg.common.mapper.JsonMapper;
import com.thinkgem.javamg.common.utils.DateUtils;
import com.thinkgem.javamg.common.utils.SpringContextHolder;
import com.thinkgem.javamg.common.utils.StringUtils;
import com.thinkgem.javamg.modules.busi.dao.NewsDao;
import com.thinkgem.javamg.modules.busi.dto.PgatourDataDTO;
import com.thinkgem.javamg.modules.busi.dto.PgatourPageDTO;
import com.thinkgem.javamg.modules.busi.entity.News;
import com.thinkgem.javamg.modules.busi.service.NewsService;
import com.thinkgem.javamg.modules.busi.utils.DateConverUtil;
import com.thinkgem.javamg.modules.busi.utils.HttpUtil;
import com.thinkgem.javamg.modules.busi.utils.ImageUtil;
import com.thinkgem.javamg.modules.busi.utils.JsoupUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * 美巡赛相关爬取
 */
public class CrawPgatour {
    protected static Logger logger = LoggerFactory.getLogger(CrawPgatour.class);
    private static NewsDao newsDao = SpringContextHolder.getBean(NewsDao.class);
    private static NewsService newsService = SpringContextHolder.getBean(NewsService.class);


    /**
     * 资讯列表
     *
     * @return
     */
    public void newsList() {
        try {
            String jsonStr = HttpUtil.sendGet("http://www.pgatour.cn/news/search/"+ DateUtils.getYear()+"/"+DateUtils.getMonth(),"");
            PgatourPageDTO page = (PgatourPageDTO) JsonMapper.fromJsonString(jsonStr, PgatourPageDTO.class);
            if (null != page) {
                List<PgatourDataDTO> list= page.getList();
                for (PgatourDataDTO data : list) {
                    //组装详情
                    News news = new News();
                    try {
                        String title = data.getT_title();
                        if (newsDao.isexist(title) > 0) {
                            continue;
                        }

                        //下载列表图片
                        String picUrl = data.getJinshanImageUrl();
                        String imgPath = ImageUtil.downloadImageToDisk(picUrl);
                        news.setTitle(title);
                        news.setContent(data.getT_content());
                        news.setPicurl(imgPath);
                        news.setSmallpicurl(imgPath);
                        news.setTag(JsoupUtil.arrToString(data.getTags()));
                        news.setAddtime(DateConverUtil.conver(data.getRightDate()));
                        news.setSource("美巡赛");
                        news.setTypeId(2);
                    } catch (Exception e) {
                        logger.error(e.getMessage());
                    }

                    //插入数据库
                    try {
                        newsService.save(news);
                    } catch (Exception e) {
                        logger.error(e.getMessage());
                    }
                }
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
    }

//
//    /**
//     * 资讯列表(解析网页版)
//     *
//     * @return
//     */
//    public void newsList() {
//        try {
//            Document doc = JsoupUtil.getDocument("http://www.pgatour.cn/news/");
//            Element element = doc.getElementById("newsList");
//            Elements liElements = element.getElementsByTag("li");
//            for (Element liElement : liElements) {
//                //组装详情
//                News news = null;
//                try {
//                    String title = JsoupUtil.getFirstElementText(liElement.select("h3[class=title]"));
//                    if (newsDao.isexist(title) > 0) {
//                        continue;
//                    }
//
//                    //下载列表图片
//                    String picUrl = JsoupUtil.getFirstElementAttrText(liElement.getElementsByTag("img"), "src");
//                    String imgPath = ImageUtil.downloadImageToDisk(picUrl);
//
//                    String detailUrl = "http://www.pgatour.cn" + liElement.select("a[class=imageBlock]").attr("href");
//                    news = newsDetail(detailUrl);
//                    news.setTitle(title);
//                    news.setPicurl(imgPath);
//                    news.setSmallpicurl(imgPath);
//                } catch (Exception e) {
//                    logger.error(e.getMessage());
//                }
//
//                //插入数据库
//                try {
//                    newsService.save(news);
//                } catch (Exception e) {
//                    logger.error(e.getMessage());
//                }
//
//                //等待
//                Thread.sleep(Constants.millis);
//            }
//        } catch (Exception e) {
//            logger.error(e.getMessage());
//        }
//    }

//    /**
//     * 图文详情(解析网页版)
//     *
//     * @return
//     */
//    public News newsDetail(String url) {
//        News news = new News();
//        try {
//            Document doc = JsoupUtil.getDocument(url);
//            Element articleElement = doc.select("article[class=blockContainer]").get(0);
//            StringBuilder contentSb = new StringBuilder();
//
//            //详情内容图片
//            Elements imgElements = doc.select("div[class=mainImageBlock]").get(0).getElementsByTag("img");
//            if (imgElements.size() > 0) {
//                Element imgElement = imgElements.get(0);
//                String imgSrc = imgElement.attr("src");
//                contentSb.append("<p><img src='").append(imgSrc).append("'/></p>");
//            }
//
//            //详情内容段落内容
//            contentSb.append(JsoupUtil.getFirstElementText(articleElement.select("div[class=articleBlock]")));
//            news.setAddtime(DateConverUtil.conver(JsoupUtil.getFirstElementText(articleElement.select("div[class=date]"))));
//            news.setSource("网络");
//            news.setContent(contentSb.toString());
//            news.setTag(JsoupUtil.getFirstElementText(articleElement.select("span[class=tags]")));
//            news.setTypeId(2);
//            news.setDetailUrl(url);
//        } catch (Exception e) {
//            logger.error(e.getMessage());
//        }
//        return news;
//    }
}
